package chapter_17_command.classic2;

/**
 * @author yaochenglong
 * @date 2017/10/20
 * 客户端
 * 修改了AbstractCommand后，高层模块不用在指定接收者是谁了，每个AbstractCommand都有一个默认的接收者；
 * 如果高层模块想要设置指定的接收者也可以，灵活性很强
 */
public class Client {
    public static void main(String[] args) {
        //定义命令
        AbstractCommand command = new ConcreteCommand1();
        //定义调用者
        Invoker invoker = new Invoker();
        //设置命令
        invoker.setCommand(command);
        //执行命令
        invoker.action();

        //指定接收者
        command = new ConcreteCommand1(new ConcreteReceiver2());
        invoker.setCommand(command);
        invoker.action();

    }
}
